package com.example.houseitemmanagebackend.dto;

import lombok.Data;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;

/**
 * 消息DTO
 */
@Data
public class MessageDTO {

    /**
     * 消息类型：通知或活动
     */
    @NotBlank(message = "消息类型不能为空")
    @Pattern(regexp = "notification|activity", message = "消息类型只能是 notification 或 activity")
    private String messageType;

    /**
     * 消息标题
     */
    @NotBlank(message = "消息标题不能为空")
    private String title;

    /**
     * 消息内容
     */
    @NotBlank(message = "消息内容不能为空")
    private String content;

    /**
     * 子类型
     */
    @NotBlank(message = "子类型不能为空")
    private String subType;

    /**
     * 用户ID
     */
    private Integer userId;

    /**
     * 源用户ID（可选）
     */
    private Integer sourceUserId;

    /**
     * 用户名（活动记录使用）
     */
    private String userName;

    /**
     * 位置ID（可选）
     */
    private Integer locationId;

    /**
     * 位置名称（活动记录使用）
     */
    private String locationName;

    /**
     * 物品ID（可选）
     */
    private Long itemId;

    /**
     * 物品名称（活动记录使用）
     */
    private String itemName;

    /**
     * 优先级（仅通知需要）：0普通，1重要，2紧急
     */
    private Integer priority = 0;

    /**
     * 是否已读（仅通知需要）：0未读，1已读
     */
    private Integer isRead = 0;
}